`ifndef TEST_CASE1__SV
`define TEST_CASE1__SV

class case1_sequence extends uvm_sequence #({{name}}_transaction);
    {{name}}_transaction trans;

    function new(string name = "case1_sequence");
        super.new(name);
        set_automatic_phase_objection(1);
    endfunction

    virtual task body();
        repeat(4) begin
            `uvm_do_with(trans, {trans.pload.size() == 50;});
        end

        #100;
    endtask

    `uvm_object_utils(case1_sequence);
endclass

class test_case1 extends base_test;

    function new(string name = "test_case1", uvm_component parent = null);
        super.new(name, parent);
    endfunction

    extern virtual function void build_phase(uvm_phase phase);

    `uvm_component_utils(test_case1);
endclass

function void test_case1::build_phase(uvm_phase phase);
    super.build_phase(phase);
    
    uvm_config_db#(uvm_object_wrapper)::set(this, 
                                            "env.i_agt.sqr.main_phase", 
                                            "default_sequence", 
                                            case1_sequence::type_id::get());
endfunction

`endif